#include <stdio.h>
#include <signal.h>
#include <unistd.h>
#include <string.h>

void handler(int signo)
{
  while(1) {
    printf("%d号信号被捕捉! pid:%d\n", signo, getpid());
    sleep(1);
  }
}
int main()
{
  struct sigaction act;
  memset(&act, 0, sizeof(act));
  act.sa_handler = handler;
  sigemptyset(&act.sa_mask);
  sigaddset(&act.sa_mask, 3);
  sigaction(2, &act, NULL);
  while(1) 
  {
    printf("hello ~~~\n");
    sleep(1);
  }
  return 0;
}
//void show_pending(sigset_t* set) {
//  int i;
//  for(i = 1; i < 32; ++i) {
//    if(sigismember(set, i)) {
//      printf("1");
//    }else {
//      printf("0");
//    }
//  }
//  printf("\n");
//}
//
//int main()
//{
//  sigset_t iset, oset;
//  sigemptyset(&iset);
//  sigemptyset(&oset);
//  sigaddset(&iset, 2);
//  sigprocmask(SIG_SETMASK, &iset, &oset);
//  sigset_t pending; 
//  while(1) {
//    sigemptyset(&pending);
//    sigpending(&pending);
//    show_pending(&pending);
//    sleep(1);
//  }
//  return 0;
//}
